package org.javaboy.vhr.mapper;

import org.apache.ibatis.annotations.Param;
import org.javaboy.vhr.model.Task;

import java.util.Date;
import java.util.List;

public interface TaskMapper {
    int deleteByPrimaryKey(Integer id);

    int insert(Task record);

    int insertSelective(Task record);

    Task selectByPrimaryKey(Integer id);

    int updateByPrimaryKeySelective(Task record);

    int updateByPrimaryKey(Task record);

    // 获取所有任务列表（管理员视角）
     List<Task> getAllTasks(@Param("page") Integer page, @Param("size") Integer size, @Param("keyword") String keyword);
//    List<Task> getAllTasks();

    // 获取任务总数
    Long getTotal(@Param("keyword") String keyword);

    // 获取指定员工的任务列表
    List<Task> getTasksByEmpId(@Param("eid") Integer eid, @Param("page") Integer page, @Param("size") Integer size);

    // 获取指定员工的任务总数
    Long getTotalByEmpId(@Param("eid") Integer eid);

    // 获取指定管理员发布的任务列表
    List<Task> getTasksByHrId(@Param("hid") Integer hid, @Param("page") Integer page, @Param("size") Integer size);

    // 获取指定管理员发布的任务总数
    Long getTotalByHrId(@Param("hid") Integer hid);

    // 员工确认接收任务
    int confirmTask(@Param("id") Integer id, @Param("assignTime") Date assignTime);

    // 员工完成任务
    int completeTask(@Param("id") Integer id, @Param("completeTime") Date completeTime);

    // 任务发布者确认任务完成
    int confirmTaskCompletion(@Param("id") Integer id);

    // 取消任务
    int cancelTask(@Param("id") Integer id);

    // 逻辑删除任务
    int logicalDeleteTask(@Param("id") Integer id);
}
